#include <stdio.h>
#include <stdlib.h>


int first_value()
{
    printf("我是第一\n");
    return 0;
}

int second_value()
{
    printf("我是第二\n");
    return 0;
}


void  logic ()
{
    // 0 为假， 非 0 为真
    // char  int  short 逻辑也是整数
    if( 1.0 )
    {
        printf("真的啊！\n");
    }

    // 关系运算符  > >= < <=  ==  !=
    // 类型相同的数据可以做关系运算
    // 关系运算的结果为 1  0
    // 不同数据类型会进行部分的自动转换

    printf("result is  %d\n",5>2);

    printf("result is  %d\n",5<2);

    printf("result is  %d\n",5.0<2.0);

    printf("result is  %d\n",8 > 2.0);

    printf("result is  %d\n",(float)'a' > 2.0);

    // 逻辑运算
    // &&  and
    // ||  or
    //  !  not
    // 先非再与后或

    printf(" ! (8 > 2) is  %d\n", ! (8 > 2));

    printf("! 100 %d\n", ! 100);

    printf("! 0  %d\n", ! 0);

    int  x = 80;

    printf("x >= 20 &&  x<=80 is  %d\n", x >= 20 &&  x<=80);

    printf("x == 20 ||  x==80 is  %d\n", x == 20 ||  x==80);

    // 逻辑运算中的短路

    // and  两个值同时为真时结果为真

    // 短路：当前面的值为假，后面的运算就不算了，直接返回为假

    // or  两个值一方为真时结果为真

    // 短路：当前面的值真，后面的运算就不算了，直接返回为真，为假时，才进行后面的运算


    if( first_value() && second_value())
    {
        printf("你们都是大神\n");
    }

    if( first_value() || second_value())
    {
        printf("你们都是大神\n");
    }

    //  current->next != NULL   && current->next->data = data

}


void if_test()
{
    float weight =  30;
    float price = 0;
    float money = 0.0;

    if( weight >= 50.0 && weight < 200.0)
    {
        price = .7;
    }
    else if (weight >= 200.0)
    {
        price = .5;
    }
    else
    {
        price = .1;
    }
    money = price * weight;
    printf("money is %.2f",money);
}


void switch_test()
{
    int value = 5;
    // switch 只能对整数进行处理

    switch(value)
    {
    case 5:
    case 1:
        printf("one\n");
        break;
    case 2:
        printf("two\n");
        break;
    case 3:
        printf("three\n");
        break;
    default:
        printf("other\n");
    }
}

int main()
{
    // logic();
    // if_test();
    switch_test();
    return 0;
}
